﻿' ChatSession.vb
' 会话数据模型类
' 用于表示一次用户与 AI 的完整对话记录
' 支持 JSON 序列化，便于持久化存储
' 
' 设计原理：
'   - 每个会话独立保存为 .json 文件，避免单文件过大
'   - 使用 Guid 作为 ID，确保唯一性
'   - 消息列表支持无限扩展
'   - 时间戳用于排序和 UI 显示
'
' 使用方法：
'   - 创建新会话：New ChatSession()
'   - 添加消息：session.Messages.Add(New ChatMessage())
'   - 保存：JsonConvert.SerializeObject(session)
'
' 注意事项：
'   - 必须引用 Newtonsoft.Json 并添加 <JsonProperty> 特性
'   - DateTime 使用 UTC 更佳（当前为本地时间）
'   - 消息过多时建议分页加载

Imports Newtonsoft.Json

Public Class ChatSession
    ' 【字段】会话唯一标识符，使用 Guid 生成，避免重复
    ' 示例：a1b2c3d4e5f64789...
    <JsonProperty("id")>
    Public Property Id As String

    ' 【字段】会话标题，用户可见名称
    ' 默认为“新对话”，可双击修改
    ' 示例："关于Python学习的讨论"
    <JsonProperty("title")>
    Public Property Title As String

    ' 【字段】会话创建时间，用于排序和归档
    ' 按时间倒序显示在左侧列表
    <JsonProperty("created_at")>
    Public Property CreatedAt As DateTime

    ' 【字段】最后更新时间，用于排序（最新在上）
    ' 每次添加消息后自动更新
    <JsonProperty("updated_at")>
    Public Property UpdatedAt As DateTime

    ' 【字段】消息列表，存储所有用户与 AI 的交互
    ' 结构：Role + Content + Timestamp
    ' 示例：
    '   [0]: Role="user", Content="你好"
    '   [1]: Role="assistant", Content="你好！"
    <JsonProperty("messages")>
    Public Property Messages As List(Of ChatMessage)
End Class

' 单条消息数据模型
' 采用 Role-Content 模式，兼容 OpenAI 等主流 API 格式
Public Class ChatMessage
    ' 【角色】"user" 表示用户输入，"assistant" 表示 AI 回复
    ' 用于 UI 区分显示（不同头像/颜色）
    <JsonProperty("role")>
    Public Property Role As String

    ' 【内容】实际文本内容
    ' 支持多行、代码块、Markdown（未来可渲染）
    <JsonProperty("content")>
    Public Property Content As String

    ' 【时间】消息发送时间，用于调试和日志
    <JsonProperty("timestamp")>
    Public Property Timestamp As DateTime
End Class